/*
 * Axelor Business Solutions
 *
 * Copyright (C) 2005-2025 Axelor (<http://axelor.com>).
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
package com.axelor.apps.production.service.manuforder;

import com.axelor.apps.production.db.ManufOrder;
import com.axelor.apps.stock.db.StockMoveLine;
import java.util.Objects;

public class ManufOrderTrackingNumberServiceImpl implements ManufOrderTrackingNumberService {
  @Override
  public void setParentTrackingNumbers(ManufOrder manufOrder) {
    Objects.requireNonNull(manufOrder);

    if (manufOrder.getProducedStockMoveLineList() != null
        && manufOrder.getConsumedStockMoveLineList() != null) {
      manufOrder.getProducedStockMoveLineList().stream()
          .map(StockMoveLine::getTrackingNumber)
          .filter(Objects::nonNull)
          .forEach(
              trackingNumber -> {
                manufOrder.getConsumedStockMoveLineList().stream()
                    .map(StockMoveLine::getTrackingNumber)
                    .filter(Objects::nonNull)
                    .forEach(trackingNumber::addParentTrackingNumberSetItem);
              });
    }
  }
}
